home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 6 / The Arsenal Files 6 (Arsenal Computer).ISO / business / hap101.zip / COMPLEX.HAP < prev    next >
Text File  |  1996-01-18  |  13KB  |  439 lines

  1. rem
  2. rem ////////////////////////////////////////////////////////////////////////
  3. rem //  Define Events
  4. rem //
  5. rem //  These are events that are triggered by certain things such as a 
  6. rem //  time of day, X10 code received, etc.
  7. rem ////////////////////////////////////////////////////////////////////////
  8.  
  9. define event MOVIE    {  X10Code E9-ON }
  10. define event MOVIEEND {  X10Code E9-OFF }
  11. define event BSLEEP   {  X10Code E11-ON }
  12. define event MOOD     {  X10Code E12-ON }
  13. define event DINNER   {  X10Code E13-ON }
  14. define event DINNEREND { X10Code E13-OFF }
  15.  
  16. define event WAKEUP  { Time 07:30-.MTWTF. }
  17. define event MINUTE  { Every Minute }
  18. define event FIRST   { Every First }
  19.  
  20. rem ////////////////////////////////////////////////////////////////////////
  21. rem //  Define Modules
  22. rem //
  23. rem //  Module definitions make it easier to reference a certain unit in
  24. rem //  your house.  Instead of referencing 'E8', you can reference 
  25. rem //  'CEILINGFAN'
  26. rem //
  27. rem //  In my house, the following modules are defined:
  28. rem ////////////////////////////////////////////////////////////////////////
  29.  
  30. define module CEILINGFAN type X10 { LampModule E8 }
  31. define module MBLIGHT    type X10 { LampModule E16 }
  32. define module LRLIGHT    type X10 { LampModule E1 }
  33. define module KTLIGHT1   type X10 { LampModule E2 }
  34. define module DRLIGHT    type X10 { LampModule E3 }
  35. define module HLLIGHT1   type X10 { LampModule E4 }
  36. define module HLLIGHT2   type X10 { LampModule E5 }
  37.  
  38. rem // MBLIGHT = MasterBedroom Light, LRLIGHT = Livingroom, KTLIGHT=Kitchen,
  39. rem // HLLIGHT = HallLight, DRLIGHT = Dining Room.
  40.  
  41. rem //////////////////////////////////////////////////////////////////
  42. rem // Start BASIC portion of code
  43. rem //////////////////////////////////////////////////////////////////
  44. start
  45.  
  46. rem -- The following flags are set to keep track of various things, such
  47. rem -- as the on/off status of the television, etc.
  48.  
  49. vcrmode = 0
  50.  
  51. vcron = 0
  52. tvon  = 0
  53. ampon = 0
  54.  
  55. movieflag = 0
  56. dinnerflag = 0
  57.  
  58.   gosub PrintHeaders:
  59.  
  60. rem **********************************************************************
  61. rem * Main Loop                                                          *
  62. rem **********************************************************************
  63. MainLoop:
  64.  
  65.   SYS_CASESENS = 0
  66.   event_check
  67.   event = event_avail(0)
  68.  
  69.   key$ = inkey$
  70.  
  71.   if left$(key$,1) = "q" then goto ProgramEnd:
  72.   if left$(key$,1) = "d" then gosub DOSShell:
  73.  
  74.  
  75.   if event = -1 then goto MainLoop:
  76.  
  77.   if event = MINUTE then goto MainLoop2:
  78.  
  79.   beep
  80.   eventcount = eventcount + 1
  81.   locate 4,35 : color 7,0 : print eventcount;
  82.   locate 3,35 : color 7,0 : print event_last$;"                           "
  83.   locate 6,35 : color 7,0 : print "Processing Event: ";event_last$ ; "             "
  84.  
  85. MainLoop2:
  86.  
  87.   if event = FIRST   then gosub First:
  88.   if event = WAKEUP  then gosub Wakeup:
  89.   if event = MINUTE  then gosub Minute:
  90.   if event = MOVIE   then gosub Movie:
  91.   if event = MOVIEEND then gosub MovieEnd:
  92.   if event = BSLEEP   then gosub bSleep:
  93.   if event = MOOD    then gosub Mood:
  94.   if event = DINNER  then gosub Dinner:
  95.   if event = DINNEREND then gosub DinnerEnd:
  96.  
  97.   event_reset event
  98.  
  99.   locate 6,35 : color 7,0 : print "Idle                                     "
  100.  
  101. goto MainLoop:
  102.  
  103. rem *************************************************************************
  104. rem * Print Screen Headers                                                  *
  105. rem *************************************************************************
  106. PrintHeaders:
  107.  
  108.   color 3,0
  109.  
  110.   locate 1,60 : print"Time: ";
  111.   locate 2,60 : print"Date: ";
  112.  
  113.   locate 3,10 : print"  Last Event Processed: "
  114.   locate 4,10 : print"Total Events Processed: "
  115.  
  116.   locate 6,10 : print"        Current Status: "
  117.  
  118.   locate 6,35 : color  7,0 : print"Idle"
  119.  
  120.   locate 25,30 : color 2,0 : print" HAP version ";SYS_VERSION$;
  121.  
  122. return
  123.  
  124. rem *************************************************************************
  125. rem * 'First' event processor                                               *
  126. rem *************************************************************************
  127. First:
  128.  
  129. rem -- Your soundcard may have a different program to play wave files.
  130.  
  131.   shell "playfile wav\funcnorp.wav"
  132.  
  133. return
  134.  
  135. rem *************************************************************************
  136. rem * every Minute event processor                                          *
  137. rem *************************************************************************
  138. Minute:
  139.  
  140.   locate 1,66
  141.   color 7,0
  142.   print left$(time$,5);
  143.   locate 2,66
  144.   print date$
  145.  
  146. return
  147.  
  148. rem *************************************************************************
  149. rem * WAKEUP event processor                                                *
  150. rem *   Cycles the masterbedroom light and leaves it on.  Much nicer than   *
  151. rem *   an alarm clock!                                                     *
  152. rem *************************************************************************
  153. Wakeup:
  154.  
  155.   sendcmd MBLIGHT, "ON"
  156.   sendmcmd MBLIGHT, "DIM", 10
  157.   sendmcmd MBLIGHT, "BRI", 10
  158.  
  159. return
  160.  
  161. rem *************************************************************************
  162. rem * Sleep event processor                                                 *
  163. rem *   Turns all units on 'E' housecode off.                               *
  164. rem *************************************************************************
  165. bSleep:
  166.  
  167.   sendfunc "e", "AUOFF"
  168.   
  169. rem -- Choose your favorite .WAV file!  
  170.  
  171.   shell "\proaudio\playfile wav\dream.wav"
  172.  
  173. return
  174.  
  175. rem *************************************************************************
  176. rem * MOVIE event processor                                                 *
  177. rem *   This is an example of a routine that can act differently depending  *
  178. rem *   on its status.  If the movie is playing and the event is triggered  *
  179. rem *   again, the movie is paused.  If the movie is paused and the event   *
  180. rem *   is triggered, the movie is resumed.                                 *
  181. rem *************************************************************************
  182. Movie:
  183.  
  184.   if movieflag = 2 then goto MovieResume:
  185.   if movieflag = 1 then goto MoviePause:
  186.  
  187.   movieflag = 1
  188.  
  189.   vcron = 1
  190.   gosub TVOn:
  191.   gosub TVVol0:
  192.  
  193.   IRSend "TV VOLUP VOLUP VOLUP VOLUP VOLUP VOLUP VOLUP VOLUP VOLUP VOLUP"
  194.   IRSend "VCR PLAY"
  195.  
  196.   gosub Mood:
  197.  
  198. return
  199.  
  200. MoviePause:
  201.  
  202.   IRSend "VCR PAUSE"
  203.  
  204.   movieflag = 2
  205.   sendunit LRLIGHT
  206.   sendunit HLLIGHT1
  207.   sendunit HLLIGHT2
  208.   sendmfunc "e", "BRI", 2
  209.  
  210. return
  211.  
  212. MovieResume:
  213.  
  214.   movieflag = 1
  215.  
  216.   sendunit LRLIGHT
  217.   sendunit HLLIGHT1
  218.   sendunit HLLIGHT2
  219.   sendmfunc "e", "DIM", 4
  220.  
  221.   IRSend "VCR PLAY"
  222.  
  223. return
  224.  
  225. rem *************************************************************************
  226. rem * MOVIEEND event processor                                              *
  227. rem *************************************************************************
  228. MovieEnd:
  229.  
  230.   IRSend "VCR STOP REW"
  231.  
  232.   gosub VCROff:
  233.   gosub TVOff:
  234.  
  235.   movieflag = 0
  236.  
  237.   sendunit HLLIGHT1
  238.   sendunit HLLIGHT2
  239.   sendunit LRLIGHT
  240.   sendmfunc "e", "BRI", 7
  241.  
  242. return
  243.  
  244. rem *************************************************************************
  245. rem * DINNER event processor                                                *
  246. rem *************************************************************************
  247. Dinner:
  248.  
  249.   if dinnerflag = 2 then goto DinnerResume:
  250.   if dinnerflag = 1 then goto DinnerPause:
  251.  
  252.   dinnerflag = 1
  253.  
  254.   sendfunc "e", "ALOFF"
  255.  
  256.   sendunit HLLIGHT1
  257.   sendunit HLLIGHT2
  258.   sendunit LRLIGHT
  259.   sendunit DRLIGHT
  260.   sendfunc "e", "ON"
  261.  
  262.   sendunit LRLIGHT
  263.   sendunit HLLIGHT1
  264.   sendunit HLLIGHT2
  265.   sendmfunc "e", "DIM", 3
  266.  
  267.   sendunit HLLIGHT1
  268.   sendunit HLLIGHT2
  269.   sendmfunc "e", "DIM", 10
  270.  
  271.  
  272. return
  273.  
  274. DinnerPause:
  275.  
  276.   dinnerflag = 2
  277.   sendunit LRLIGHT
  278.   sendunit HLLIGHT1
  279.   sendunit HLLIGHT2
  280.   sendmfunc "e", "BRI", 2
  281.  
  282. return
  283.  
  284. DinnerResume:
  285.  
  286.   dinnerflag = 1
  287.  
  288.   sendunit LRLIGHT
  289.   sendunit HLLIGHT1
  290.   sendunit HLLIGHT2
  291.   sendmfunc "e", "DIM", 4
  292.  
  293. return
  294.  
  295. rem *************************************************************************
  296. rem * DINNEREND event processor                                             *
  297. rem *************************************************************************
  298. DinnerEnd:
  299.  
  300.   dinnerflag = 0
  301.   sendunit HLLIGHT1
  302.   sendunit HLLIGHT2
  303.   sendunit LRLIGHT
  304.   sendunit DRLIGHT
  305.   sendmfunc "e", "BRI", 7
  306.  
  307. return
  308.  
  309. rem *************************************************************************
  310. rem * MOOD event processor                                                  *
  311. rem *************************************************************************
  312. Mood:
  313.  
  314.   sendfunc "e", "ALOFF"
  315.  
  316.   sendunit HLLIGHT1
  317.   sendunit HLLIGHT2
  318.   sendunit LRLIGHT
  319.   sendfunc "e", "ON"
  320.  
  321.   sendunit LRLIGHT
  322.   sendunit HLLIGHT1
  323.   sendunit HLLIGHT2
  324.   sendmfunc "e", "DIM", 4
  325.  
  326.   sendunit HLLIGHT1
  327.   sendunit HLLIGHT2
  328.   sendmfunc "e", "DIM", 10
  329.  
  330. return
  331.  
  332. rem *************************************************************************
  333. rem * VCROn                                                                 *
  334. rem *************************************************************************
  335. VCROn:
  336.  
  337.   if vcron = 1 then return
  338.   IRSend "VCR POWER"
  339.   vcron = 1
  340.  
  341. return
  342.  
  343. rem *************************************************************************
  344. rem * VCROff                                                                *
  345. rem *************************************************************************
  346. VCROff:
  347.  
  348.   if  vcron = 0 then return
  349.   IRSend "VCR POWER"
  350.   vcron = 0
  351.  
  352. return
  353.  
  354. rem *************************************************************************
  355. rem * TVOn                                                                  *
  356. rem *************************************************************************
  357. TVOn:
  358.  
  359.   if tvon = 1 then return
  360.   IRSend "TV POWER"
  361.   tvon = 1
  362.  
  363. return
  364.  
  365. rem *************************************************************************
  366. rem * TVOff                                                                 *
  367. rem *************************************************************************
  368. TVOff:
  369.  
  370.   if tvon = 0 then return
  371.   IRSend "TV POWER"
  372.   tvon = 0
  373.  
  374. return
  375.  
  376. rem *************************************************************************
  377. rem * TVVol0                                                               *
  378. rem *************************************************************************
  379. TVVol0:
  380.  
  381.   IRSend "TV VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN"
  382.   IRSend "VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN"
  383.  
  384. return
  385.  
  386. rem *************************************************************************
  387. rem * AMPOn                                                                  *
  388. rem *************************************************************************
  389. AMPOn:
  390.  
  391.   if ampon = 1 then return
  392.   IRSend "AMP POWER"
  393.   ampon = 1
  394.  
  395. return
  396.  
  397. rem *************************************************************************
  398. rem * AMPOff                                                                *
  399. rem *************************************************************************
  400. AMPOff:
  401.  
  402.   if ampon = 0 then return
  403.   IRSend "AMP POWER"
  404.   ampon = 0
  405.  
  406. return
  407.  
  408. rem *************************************************************************
  409. rem * AMPVol0                                                               *
  410. rem *************************************************************************
  411. AMPVol0:
  412.  
  413.   IRSend "AMP VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN"
  414.   IRSend "VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN VOLDN"
  415.  
  416. return
  417.  
  418. rem *************************************************************************
  419. rem * DOSSHELL event processor                                              *
  420. rem *************************************************************************
  421. DOSShell:
  422.   event_reset DOSShell
  423.   print"Shelling to DOS...type EXIT and press Enter to return"
  424.   sleep 2
  425.   shell""
  426. return
  427.  
  428. rem *************************************************************************
  429. rem * Program End                                                           *
  430. rem *************************************************************************
  431. ProgramEnd:
  432.  
  433.   shell "playfile wav\unstable.wav"
  434.  
  435.   locate 10,1 : print"Ending at users request!"
  436.   sleep 1
  437.  
  438. end
  439.